<?php defined('SYSPATH') or die('No direct script access.');

// -- Environment setup --------------------------------------------------------

// Load the core Kohana class
require SYSPATH.'classes/kohana/core'.EXT;

if (is_file(APPPATH.'classes/kohana'.EXT))
{
	// Application extends the core
	require APPPATH.'classes/kohana'.EXT;
}
else
{
	// Load empty core extension
	require SYSPATH.'classes/kohana'.EXT;
}

/**
 * Set the default time zone.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/timezones
 */
date_default_timezone_set('Europe/Moscow');

/**
 * Set the default locale.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/setlocale
 */
setlocale (LC_ALL, 'ru_RU.utf-8');

/**
 * Enable the Kohana auto-loader.
 *
 * @see  http://kohanaframework.org/guide/using.autoloading
 * @see  http://php.net/spl_autoload_register
 */
spl_autoload_register(array('Kohana', 'auto_load'));

/**
 * Enable the Kohana auto-loader for unserialization.
 *
 * @see  http://php.net/spl_autoload_call
 * @see  http://php.net/manual/var.configuration.php#unserialize-callback-func
 */
ini_set('unserialize_callback_func', 'spl_autoload_call');

// -- Configuration and initialization -----------------------------------------

/**
 * Set the default language
 */
I18n::lang('ru');

/**
 * Set Kohana::$environment if a 'KOHANA_ENV' environment variable has been supplied.
 *
 * Note: If you supply an invalid environment name, a PHP warning will be thrown
 * saying "Couldn't find constant Kohana::<INVALID_ENV_NAME>"
 */
if (isset($_SERVER['KOHANA_ENV']))
{
	Kohana::$environment = constant('Kohana::'.strtoupper($_SERVER['KOHANA_ENV']));
}

/**
 * Initialize Kohana, setting the default options.
 *
 * The following options are available:
 *
 * - string   base_url    path, and optionally domain, of your application   NULL
 * - string   index_file  name of your index file, usually "index.php"       index.php
 * - string   charset     internal character set used for input and output   utf-8
 * - string   cache_dir   set the internal cache directory                   APPPATH/cache
 * - boolean  errors      enable or disable error handling                   TRUE
 * - boolean  profile     enable or disable internal profiling               TRUE
 * - boolean  caching     enable or disable internal caching                 FALSE
 */
Kohana::init(array(
	'base_url'   => '/',
	'index_file' => false
));

/**
 * Attach the file write to logging. Multiple writers are supported.
 */
Kohana::$log->attach(new Log_File(APPPATH.'logs'));

/**
 * Attach a file reader to config. Multiple readers are supported.
 */
Kohana::$config->attach(new Config_File);

/**
 * Cookie salt.
 */
Cookie::$salt = 'gfsdhhGfdg^fdshh';
if (isset($_SERVER['HTTP_HOST'])) {
    Cookie::$domain = '.'.Model_Main::get_base_domain();
}

/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
	 'auth'       => MODPATH.'auth',       // Basic authentication
	 'cache'      => MODPATH.'cache',      // Caching with multiple backends
	// 'codebench'  => MODPATH.'codebench',  // Benchmarking tool
	 'database'   => MODPATH.'database',   // Database access
	 'image'      => MODPATH.'image',      // Image manipulation
	 'orm'        => MODPATH.'orm',        // Object Relationship Mapping
	// 'unittest'   => MODPATH.'unittest',   // Unit testing
	// 'userguide'  => MODPATH.'userguide',  // User guide and API documentation
    // 'sitemap'    => MODPATH.'sitemap',
    // 'morphy'      => MODPATH.'morphy'
    'purifier'    => MODPATH.'purifier'
	));

/**
 * Set the routes. Each route must have a minimum of a name, a URI and a set of
 * defaults for the URI.
 */
    
/*Route::set('index', 'product/<product_id>-<product_url>',
    array
    (
        'product_id'   => '[0-9]+',
        'product_url'  => '[a-zA-Z0-9-]+'
    ))
    ->defaults(array(
        'controller' => 'product',
        'action'     => 'index'
    )); */
    
/*Route::set('index', '')
    ->defaults(array(
        'directory'  => 'index',
        'controller' => 'index',
        'action'     => 'index'
    ));
    
Route::set('admin', '')
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'index',
        'action'     => 'index'
    ));   */
    
Route::set('register', 'register')
    ->defaults(array(
        'directory'  => 'index',
        'controller' => 'index',
        'action'     => 'register'
    ));
    
Route::set('login', 'login')
    ->defaults(array(
        'directory'  => 'index',
        'controller' => 'index',
        'action'     => 'login'
    ));
    
Route::set('logout', 'logout')
    ->defaults(array(
        'directory'  => 'index',
        'controller' => 'index',
        'action'     => 'logout'
    ));
    
Route::set('terms', 'terms')
    ->defaults(array(
        'directory'  => 'index',
        'controller' => 'index',
        'action'     => 'terms'
    ));

Route::set('success', 'success')
    ->defaults(array(
        'directory'  => 'index',
        'controller' => 'index',
        'action'     => 'success'
    )); 
    
Route::set('blogsubscribe', 'blogsubscribe')
    ->defaults(array(
        'directory'  => 'index',
        'controller' => 'index',
        'action'     => 'blogsubscribe'
    ));    
    
Route::set('dashboard', 'dashboard')
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'index',
        'action'     => 'dashboard'
    ));
    
Route::set('mailbox-add-edit-delete', 'mailbox(/<action>(/<mailbox_hash>))',
    array
    (
        'action'  => '(add|edit|delete)',
        'mailbox_hash' => '[a-zA-Z0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'mailbox',
        'action'     => 'index'
    ));
    
Route::set('mailbox-forward', 'mailbox/forward/<mailbox_hash>',
    array
    (
        'mailbox_hash' => '[a-zA-Z0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'mailbox',
        'action'     => 'forward'
    ));
    
Route::set('mailbox-save-reply', 'mailbox/save-reply/<mailbox_hash>',
    array
    (
        'mailbox_hash' => '[a-zA-Z0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'mailbox',
        'action'     => 'save_reply'
    ));
 
Route::set('mailbox', 'mailbox/<mailbox_hash>(/<filter>)',  // (/page/<page>)
    array
    (
        'mailbox_hash' => '[a-zA-Z0-9]+',
        'filter'       => '[a-z]+',
        //'page'         => '[0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'mailbox',
        'action'     => 'index'
    ));
    
Route::set('ticket-add-edit-delete', 'ticket(/<action>(/<ticket_id>))',
    array
    (
        'action'  => '(edit|delete)',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'ticket',
        'action'     => 'index'
    ));

Route::set('ticket-uploadfiles', 'ticket/uploadfiles/<mailbox_hash>',
    array
    (
        'mailbox_hash' => '[a-zA-Z0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'ticket',
        'action'     => 'uploadfiles'
    ));
    
Route::set('ticket-add', 'ticket/add/<mailbox_hash>',
    array
    (
        'mailbox_hash' => '[a-zA-Z0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'ticket',
        'action'     => 'add'
    ));
    
Route::set('ticket-assign', 'ticket/assign/<ticket_id>/<assigned_id>',
    array
    (
        'ticket_id'   => '[0-9]+',
        'assigned_id' => '[0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'ticket',
        'action'     => 'assign'
    ));
    
Route::set('ticket-status', 'ticket/status/<ticket_id>/<status>',
    array
    (
        'ticket_id' => '[0-9]+',
        'status'    => '[a-z]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'ticket',
        'action'     => 'status'
    ));
 
Route::set('ticket', 'ticket/<ticket_id>',
    array
    (
        'ticket_id' => '[0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'ticket',
        'action'     => 'index'
    ));
    
Route::set('settings', 'settings(/<action>(/<id>))')
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'settings',
        'action'     => 'index'
    ));
    
Route::set('user', 'user(/<action>(/<id>))',
    array
    (
        'action'  => '(add|profile|delete|notifications)',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'user',
        'action'     => 'index'
    ));
    
Route::set('user-invite', 'user-invite/<invite>',
    array
    (
        'invite' => '[a-zA-Z0-9]+', 
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'userInvite',
        'action'     => 'index'
    ));
    
Route::set('pattern', 'pattern(/<action>(/<id>))',
    array
    (
        'action'  => '(delete)',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'pattern',
        'action'     => 'index'
    ));
    
/*Route::set('admin-login', 'admin/id<shop_id>/login',
    array
    (
        'shop_id'  => '[0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'login',
        'action'     => 'login'
    ));
    
Route::set('admin-logout', 'admin/id<shop_id>/logout',
    array
    (
        'shop_id'  => '[0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'login',
        'action'     => 'logout'
    ));
    
Route::set('admin', 'admin/id<shop_id>(/<controller>(/<action>(/<id>)))(/page/<page>)',
    array
    (
        'shop_id'  => '[0-9]+',
        'page'     => '[0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'index',
        'action'     => 'index'
    ));    */
    
/*Route::set('widget', 'widget/id<shop_id>(/<controller>(/<action>(/<id>)))(/page/<page>)',
    array
    (
        'shop_id'  => '[0-9]+',
        'page'     => '[0-9]+',
    ))
    ->defaults(array(
        'directory'  => 'widget',
        'controller' => 'index',
        'action'     => 'index'
    ));   */
    
Route::set('error', 'error/<action>(/<message>)',
    array(
        'action' => '[0-9]++',
        'message' => '.+',
    ))
    ->defaults(array(
        'controller' => 'error',
    ));

Route::set('default', '(<directory>(/<controller>(/<action>(/<id>))))')
	->defaults(array(
        'directory'  => 'index',
		'controller' => 'index',
		'action'     => 'index'
	));
